home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 25 / AMIGAplus Sonderheft 25 (2000)(Falke)(DE)(Track 1 of 4)[!].iso / Updates / HD-Installer / jst_dev / sources / src / loaders / ArcadePool / poolhd.asm < prev    next >
Assembly Source File  |  2000-04-12  |  2KB  |  127 lines

  1. ; *** Arcade Pool Hard Disk Loader BETA
  2. ; *** Written by Jean-François Fabre
  3.  
  4.     include    "syslibs.i"
  5.     include    "jst.i"
  6.  
  7.     HD_PARAMS    "disk.",$EC800,1
  8.  
  9. BOOT_SIZE = 22528
  10.  
  11. loader:
  12.     move.l    #$100000,D0
  13.     JSRABS    AllocExtMem
  14.  
  15.     Mac_printf    "Arcade Pool HD Loader v2.0"
  16.     Mac_printf    "Coded by Jean-François Fabre © 1997-1999"
  17.     NEWLINE
  18.     Mac_printf    "Thanks to Chris Vella"
  19.  
  20.     JSRABS    CheckFastMem
  21.     tst.l    D0
  22.     bne.b    .fastok
  23.     RELOC_STL    nofast
  24. .fastok:
  25.  
  26.     JSRABS    UseHarryOSEmu
  27.     JSRABS    LoadDisks
  28.  
  29.     moveq.l    #0,D0
  30.     moveq.l    #0,D1
  31.     JSRABS    Degrade
  32.  
  33.     GO_SUPERVISOR
  34.     RELOC_TSTL    nofast
  35.     bne.b    .save1meg
  36.  
  37.     SAVE_OSDATA    $0
  38.     bra    .boot
  39. .save1meg
  40.     SAVE_OSDATA    $100000
  41. .boot
  42.     bsr    InstallBoot
  43.  
  44.     JSRGEN    FlushCachesHard
  45.  
  46.     ; *** jump whereever you want
  47.  
  48.  
  49.     move.l    bootbase(pc),A0
  50.     nop
  51.     nop
  52.     jmp    $40C(A0)
  53.     nop
  54.     nop
  55.  
  56. InstallBoot:
  57.     ; allocates mem for boot file
  58.  
  59.     JSRGEN    EnterDebugger
  60.  
  61.     move.l    #BOOT_SIZE,D0
  62.     move.l    #MEMF_CHIP,D1
  63.     move.l    4,A6
  64.     JSRLIB    AllocMem
  65.     RELOC_MOVEL    D0,bootbase
  66.  
  67.     ; read the boot file
  68.  
  69.     move.l    bootbase(pc),A0
  70.     moveq.l    #0,D0
  71.     move.l    #BOOT_SIZE,D1
  72.     moveq.l    #0,D2
  73.     JSRGEN    ReadDiskPart
  74.  
  75.     ; patch the boot file
  76.  
  77.     move.l    bootbase(pc),A0
  78.  
  79.     move.l    ($DC6,A0),d0
  80.     cmp.l    #$48E77FFC,D0
  81.     bne    .v2
  82.  
  83.     PATCHUSRJMP    ($DC6,A0),ReadSectors
  84.     PATCHUSRJSR    ($48A,A0),PatchLoader1_V1
  85.     bra    .cont
  86.  
  87. .v2
  88.     PATCHUSRJMP    ($DEC,A0),ReadSectors
  89.     PATCHUSRJSR    ($48A,A0),PatchLoader1_V2
  90.  
  91.  
  92. .cont
  93.     rts
  94.  
  95. MemErr:
  96.     Mac_printf    "** Not enough memory to run Arcade Pool!"
  97.     JMPABS    CloseAll
  98.  
  99. PatchLoader1_V2:
  100.     move.l    16(A0),A0    ; extbase
  101.  
  102.     PATCHUSRJMP    ($330E,A0),ReadSectors
  103.     bra.b    ReRun
  104.  
  105. PatchLoader1_V1:
  106.     move.l    16(A0),A0    ; extbase
  107.  
  108.     PATCHUSRJMP    ($32E8,A0),ReadSectors
  109.  
  110. ReRun:
  111.     JSRGEN    FlushCachesHard
  112.     jmp    (A0)
  113.  
  114.  
  115. ReadSectors:
  116.     move.l    D1,-(sp)
  117.     sub.w    #$4,D1            ; -4 12 sectored tracks + 4 11 sectored tracks
  118.     JSRGEN    ReadRobSectors
  119.     move.l    (sp)+,D1
  120.     moveq    #0,D0
  121.     rts
  122.  
  123. bootbase:
  124.     dc.l    0
  125. nofast:
  126.     dc.l    0
  127.